package main

import (
	"TaskQue/implement"
	"fmt"
	"sync"
)

// func main() {
// 	queue := implement.TaskQueue{}

// 	// 添加任务到队列
// 	queue.Enqueue(implement.Task{ID: 1})
// 	queue.Enqueue(implement.Task{ID: 2})

// 	// 从队列中取出并执行任务
// 	for i := 0; i < 2; i++ {
// 		task, err := queue.Dequeue()
// 		if err != nil {
// 			fmt.Println(err)
// 			continue
// 		}
// 		err = task.Execute()
// 		if err != nil {
// 			fmt.Println(err)
// 		}
// 	}

// }

func main() {
	queue := implement.TaskQueue{}

	// 添加任务到队列
	queue.Enqueue(implement.Task{ID: 1})
	queue.Enqueue(implement.Task{ID: 2})

	// 创建一个WaitGroup等待所有goroutine完成
	var wg sync.WaitGroup

	// 启动多个goroutine来并发执行任务
	for i := 0; i < 2; i++ {
		wg.Add(1) // 增加WaitGroup的计数
		go func() {
			defer wg.Done() // 在goroutine结束时减少WaitGroup的计数
			for {
				task, err := queue.Dequeue()
				if err != nil {
					fmt.Println(err)
					break // 如果队列为空，则退出goroutine
				}
				err = task.Execute()
				if err != nil {
					fmt.Println(err)
				}
			}
		}()
	}

	wg.Wait() // 等待所有goroutine完成
}
